#ifndef HFT_ORDER_BOOK_MANAGER_H
#define HFT_ORDER_BOOK_MANAGER_H

#include "market_data_types.h"
#include <vector>
#include <chrono>

namespace hft {

/**
 * @class OrderBookManager
 * @brief 订单簿管理类，负责维护和更新订单簿数据
 * 
 * 提供订单簿的更新、查询和状态管理功能
 */
class OrderBookManager {
public:
    /**
     * @brief 构造函数
     * @param symbol 交易品种
     */
    explicit OrderBookManager(const Symbol& symbol);
    
    /**
     * @brief 更新价格档位
     * @param level 价格和数量对
     * @param direction 买卖方向
     */
    void update(const std::pair<Price, Volume>& level, OrderDirection direction);
    
    /**
     * @brief 移除价格档位
     * @param price 要移除的价格
     * @param direction 买卖方向
     */
    void remove(Price price, OrderDirection direction);
    
    /**
     * @brief 清空订单簿
     */
    void clear();
    
    // 查询接口
    const std::vector<std::pair<Price, Volume>>& getBids() const;
    const std::vector<std::pair<Price, Volume>>& getAsks() const;
    const Symbol& getSymbol() const;
    const Timestamp& getTimestamp() const;
    Price getBestBid() const;
    Price getBestAsk() const;
    Price getSpread() const;
    const OrderBook& getOrderBook() const;
    
private:
    OrderBook order_book_;  // 订单簿数据
};

} // namespace hft

#endif // HFT_ORDER_BOOK_MANAGER_H